﻿#ifndef DEMUX_H
#define DEMUX_H

#include <mutex>
extern "C"
{
#include "libavformat/avformat.h"
}

/**
 * @brief 解封装
 */
class Demux
{
public:
    Demux();
    ~Demux();

    bool open_stream(const char* url);//打开流
    AVCodecParameters* copyAVCodecParameters(int index);
    int getVideoStreamIndex();
    int getAudioStreamIndex();
    AVPacket* read();

private:

    bool getStreamInfo();

private:

    AVFormatContext *avformat_ctx = 0;//解封装上下文
    std::mutex mutex;
    int video_stream_index;//音视频流，是通过一个数组来区分的,记录下来他的索引位置，以便接下来使用
    int audio_stream_index;
    const char* url;

};

#endif // DEMUX_H
